import ajax from './ajax';
import jsonp from 'jsonp';
import {message} from 'antd';

/**
 * 封装请求接口
 */

/**
 * 登录接口
 * @param username 用户名
 * @param password 密码
 * @return Promise对象
 */
function reqLogin(username,password){
  return ajax('/login',{username,password},'POST');
}

/**
 * 添加用户
 * @return Promise对象
 * @param user
 */
function reqAddUser(user){
  return ajax('/manage/user/add',user,'POST');
}

/**
 * 修改用户
 * @return Promise对象
 * @param user
 */
function reqUpdateUser(user){
  return ajax('/manage/user/update',user,'POST');
}

/**
 * 用户列表
 * @return Promise对象
 */
function reqUserList(){
  return ajax('/manage/user/list');
}

/**
 * 删除用户
 * @return Promise对象
 * @param userId
 */
function reqDeleteUser(userId){
  return ajax('/manage/user/delete',{userId},'POST');
}


/**
 * 获取一级或某个二级分类列表
 * @param parentId 父级分类的ID
 * @return Promise对象
 */
function reqGetCategoryList(parentId){
  return ajax('/manage/category/list',{parentId});
}

/**
 * 添加分类
 * @param parentId 父级分类的ID
 * @param categoryName 分类名称
 * @return Promise对象
 */
function reqAddCategory(categoryName,parentId){
  return ajax('/manage/category/add',{categoryName,parentId},'POST');
}

/**
 * 修改分类
 * @param categoryId 父级分类的ID
 * @param categoryName 分类名称
 * @return Promise对象
 */
function reqUpdateCategory(categoryId,categoryName){
  return ajax('/manage/category/update',{categoryId,categoryName},'POST');
}

/**
 * 获取商品分页列表
 * @param pageNum 第几页
 * @param pageSize 一页多少条
 * @return Promise对象
 */
function reqGetProductList(pageNum,pageSize){
  return ajax('/manage/product/list',{pageNum,pageSize});
}

/**
 * 搜索商品分页列表
 * @param pageNum 第几页
 * @param pageSize 一页多少条
 * @param searchName 搜索关键字
 * @param searchType 按什么方式搜索
 * @return Promise对象
 */
function reqSearchProductList(pageNum,pageSize,searchName,searchType){
  return ajax('/manage/product/list',{pageNum,pageSize,[searchType]:searchName});
}

/**
 * 删除图片
 * @param name 图片名称（部分路径）
 * @returns Promise
 */
function reqDeleteImg(name){
  return ajax('/manage/img/delete',{name},'POST');
}

/**
 * 添加or修改商品
 * @param product 商品对象
 * @returns Promise
 */
function reqAddOrUpdateProduct(product){
  return ajax('/manage/product/' + ( product._id?'update':'add'),product,'POST');
}

/**
 * 更新商品的状态(上架/下架)
 * @param productId
 * @param status
 * @returns Promise
 */
function reqUpdateStatus(productId,status){
  return ajax('/manage/product/updateStatus',{productId,status},'POST');
}

/**
 * 获取一个分类
 * @param categoryId
 * @returns Promise
 */
function reqCategory(categoryId){
  return ajax('/manage/category/info',{categoryId});
}

/**
 * 添加角色
 * roleName 角色名称
 * @returns Promise
 */
function reqAddRole(roleName){
  return ajax('/manage/role/add',{roleName},'POST');
}

/**
 * 更新角色
 * @returns Promise
 * @param role
 */
function reqUpdateRole(role){
  return ajax('/manage/role/update',role,'POST');
}

/**
 * 获取角色列表
 * @returns Promise
 */
function reqRoleList(){
  return ajax('/manage/role/list');
}

/**
 * 以jsonp格式请求天气接口
 * 上海
 */
function reqWeather(){
  /*
  jsonp请求之后 转化成 Promise对象然后返回
   */
  return new Promise(function(resolve,reject){
    const url = `http://restapi.amap.com/v3/weather/weatherInfo?city=310118&key=a1d448abccd782547b889ddda2291e68`;
    /*
    jsonp请求返回三个参数：url，参数，回调函数
     */
    jsonp(url,{param: 'callback'},function(error,response){
      if(!error){
        // 请求成功,取出数据
        const {weather} = response.lives[0];
        // 返回需要的数据
        resolve({weather});
      }else{
        // 请求失败
        reject(error);
        message.error("请求出错：" + error + "！").then();
      }
    });
  });
}

export {
  reqLogin,
  reqAddUser,
  reqWeather,
  reqAddCategory,
  reqGetCategoryList,
  reqUpdateCategory,
  reqGetProductList,
  reqSearchProductList,
  reqDeleteImg,
  reqAddOrUpdateProduct,
  reqUpdateStatus,
  reqCategory,
  reqAddRole,
  reqUpdateRole,
  reqRoleList,
  reqDeleteUser,
  reqUpdateUser,
  reqUserList,
};